Hi there! 我是嘟嘟~受到前輩啟發,想說可以紀錄一下自己練習的過程,小女子為程式超超菜鳥,此系列非教學文,僅為個人解題筆記,可能有錯誤或未補充詳盡之處,歡迎前輩們不吝指教!也歡迎正在自學的夥伴一起討論學習~
給定伙食的價格(伙食的基本成本),小費百分比(作為小費添加的伙食價格的百分比)和稅費百分比(作為稅費添加的伙食價格的百分比),查找並打印這頓飯的總費用。
注意:請確保使用精確值進行計算,否則可能會導致舍入結果不正確!
Note: Be sure to use precise values for your calculations, or you may end up with an incorrectly rounded result!
有幾行數字輸入:
第一行有一個雙精度數字(稅費和小費前的餐費)。
第二行有一個整數(作為小費的百分比)。
第三行有一個整數(作為稅金的百分比)。
打印總餐費,其中是整個賬單的四捨五入整數結果(含稅和小費)。
12.00
20
8
15
import math
import os
import random
import re
import sys
# Complete the solve function below.
def solve(meal_cost, tip_percent, tax_percent):
if __name__ == '__main__':
meal_cost = float(input())
tip_percent = int(input())
tax_percent = int(input())
solve(meal_cost, tip_percent, tax_percent)
def solve(meal_cost, tip_percent, tax_percent):
total_cost = meal_cost * (1 + (tip_percent + tax_percent) / 100)
return round(total_cost)
if __name__ == '__main__':
meal_cost = float(input())
tip_percent = int(input())
tax_percent = int(input())
print(solve(meal_cost, tip_percent, tax_percent))
round()
函數讓餐費四捨五入到整數。四捨五入有一些要注意的地方,可以參考文章【四捨五入就用round( )?Python四捨五入的正確打開方式!】我來吐槽一下.
你 import 了一些沒使用的module, 這樣不管用不用都import
是很糟糕的壞習慣,寫程式必須是要必要的才寫,無意義的會讓後續維護困難.
2.這的題目很簡單,沒有使用 function 的必要,就是非用不可的理由,那何必硬要使用?徒增無謂的程式.
3.雖然題目沒要求,但是你可以加強做印出,輸入的提示,哪怕一行來說明,需要輸入三行資料.
計算部分:
total_cost = meal_cost + meal_cost*tip_percent/100 + meal_cost*tax_percent/100
這樣的寫法不是很好,兩次除法運算...
total_cost = meal_cost * (1 + (tip_percent + tax_percent) / 100)
除法運算,盡量少做,因為會產生誤差.當然我寫的計算方式,也不一定比你寫的好.
希望你能夠注意到,並且在後續的程式中,多用幾種方法,這時候function 就派上用場了,
來做比較.得到自己的心得,這才是重要的.
另外既然辛辛苦苦寫了程式,執行結果,最好也紀錄起來,以後你再看的時候,會更有幫助.
雖然我是吐槽,但你也不用太難過,只是藉此先提醒你啦.
另外 你的 * / 是與變數連在一起的,最好能改掉,以後減少打錯看錯的機會.
加油!
邦友您好:
非常感謝您的回覆及建議!小的受教了!!
小的會謹記在心!謝謝您的閱讀與指教!!
不好意思,想請教一下大大:
除法運算會造成誤差,是只有Python比較會發生的狀況,還是所有程式語言都盡量少用除法比較好?
查到這篇文章:【精確的浮點數運算?】
其中寫到"但是電腦的記憶體是有限的,因此只能存有限的二進位小數,沒辦法完全等於 0.1,所以 Python 會選擇一個近似值來取代",是因為電腦硬體的關係嗎?
你可以再安裝幾種程式語言測試看看.盡量養成自己測試推演的習慣,
這時候你就會發覺到,寫成程式,可以重複執行的好處了.
例如 Ruby, 可以做對照.
以後你還會遇到有些人很堅持 先算除的,得到比例數,再乘以天數或個數. 然後得到一堆誤差放大的,最後再加總,唉....
那句話是不完全正確的,不是 Python 選擇近似值,而是數位系統的
天然限制.這個你先了解而不必鑽進去理解.
之前你發問這篇
https://ithelp.ithome.com.tw/questions/10197629
我有回答建議一些電子書.
資訊這條路很長也很有趣,不用心急,慢慢來,多欣賞路上的風景以及路邊的小碎石跟小草小花,不用急著趕路.
明白了>-<! 謝謝您指出小的問題點!!
會再去多多閱讀! 也希望自己能抓到學習的步調,感激不盡!!